repo: Make abort_transaction silently succeed if we're not in a transaction
authorJasper St. Pierre <jstpierre@mecheye.net>
Thu, 5 Sep 2013 21:57:53 +0000 (17:57 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Sat, 7 Sep 2013 00:31:12 +0000 (20:31 -0400)
This helps callers out a lot, and means we can always call abort_transaction
at the end of a function.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

src/libostree/ostree-repo-commit.c
src/ostree/ot-builtin-commit.c

index 69b48c8fcafb841d5ff7ee586b2da41413aaed02..8b69e48e2bef572585ce79aad61b1adb5a33ca07 100644 (file)
@@ -662,6 +662,9 @@ ostree_repo_abort_transaction (OstreeRepo     *self,
 {
   gboolean ret = FALSE;
 
+  if (!self->in_transaction)
+    return TRUE;
+
   if (!cleanup_tmpdir (self, cancellable, error))
     goto out;
 
index 22d6d89c2c18fc9a3fc558a2da69c9397937c615..80d0e50d53266b33f293af2ed3c44d9e11b8170b 100644 (file)
@@ -224,7 +224,6 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
   GOptionContext *context;
   gboolean ret = FALSE;
   gboolean skip_commit = FALSE;
-  gboolean in_transaction = FALSE;
   gs_unref_object GFile *arg = NULL;
   gs_free char *parent = NULL;
   gs_free char *commit_checksum = NULL;
@@ -294,8 +293,6 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
   if (!ostree_repo_prepare_transaction (repo, opt_link_checkout_speedup, NULL, cancellable, error))
     goto out;
 
-  in_transaction = TRUE;
-
   mtree = ostree_mutable_tree_new ();
 
   if (argc <= 1 && (opt_trees == NULL || opt_trees[0] == NULL))
@@ -422,20 +419,12 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
 
       if (!ostree_repo_commit_transaction (repo, &stats, cancellable, error))
         goto out;
-
-      in_transaction = FALSE;
       
       if (!ostree_repo_write_ref (repo, NULL, opt_branch, commit_checksum, error))
         goto out;
-
     }
   else
     {
-      if (!ostree_repo_abort_transaction (repo, cancellable, error))
-        goto out;
-
-      in_transaction = FALSE;
-
       commit_checksum = g_strdup (parent);
     }
 
@@ -455,10 +444,7 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
 
   ret = TRUE;
  out:
-  if (in_transaction)
-    {
-      (void) ostree_repo_abort_transaction (repo, cancellable, NULL);
-    }
+  ostree_repo_abort_transaction (repo, cancellable, NULL);
   if (context)
     g_option_context_free (context);
   if (modifier)